/* c01/ejemplo-03.c
Modos de video en SDL
*/
#include <SDL/SDL.h>
#define ANCHO 400
#define ALTO 400

int main(void){
	SDL_Surface *pantalla = NULL;
	SDL_Surface *imagen = NULL;

	if (SDL_Init(SDL_INIT_VIDEO) < 0){
		printf("Error al iniciar SDL con el subsistema de video: %s\n", SDL_GetError());
		exit(1);	
	}
	atexit(SDL_Quit);
	/* Modos disponibles:
	 * SDL_SWSURFACE usa la memoria del sistema
	 * SDL_HWSURFACE usa la memoria de video
	 * SDL_DOUBLEBUF activa doble buffer en la memoria de video
	 * SDL_FULLSCREEN
	 * SDL_OPENGL
	 * SDL_RESIZABLE
	 * SDL_NOFRAME 
	**/

	//Ventana normal de tamaño fijo
	//pantalla = SDL_SetVideoMode(ANCHO, ALTO, 0, SDL_SWSURFACE);

	//Ventana normal de tamaño variable
	//pantalla = SDL_SetVideoMode(0, 0, 0, SDL_SWSURFACE);
	
	//Ventana sin borde de tamaño fijo
	//pantalla = SDL_SetVideoMode(ANCHO, ALTO, 0, SDL_SWSURFACE | SDL_NOFRAME);
	
	//Pantalla completa con resolución fija
	//pantalla = SDL_SetVideoMode(ANCHO, ALTO, 0, SDL_SWSURFACE | SDL_FULLSCREEN);

	//Pantalla completa con resolución máxima
	pantalla = SDL_SetVideoMode(0, 0, 0, SDL_SWSURFACE | SDL_FULLSCREEN);
	
	if (pantalla == NULL) {
		printf("Error al inicializar el modo de video: '%s'\n", SDL_GetError());
		exit(1);	
	}

	printf("Tamaño de la pantalla: %dx%d\n", pantalla->w, pantalla->h);
	
	//Cargar una imagen
	imagen = SDL_LoadBMP("logo_uca.bmp");
	if (imagen == NULL) {
		printf("Error al cargar la imagen: '%s'\n", SDL_GetError());
		exit(1);	
	}
	
	//Copiar la imagen al buffer temporal en 'pantalla':
	SDL_BlitSurface(imagen, NULL, pantalla, NULL);

	//Volcar el buffer a la memoria de video
	SDL_Flip(pantalla);

	//Espera un tiempo de 10 segundos
	SDL_Delay(10000);
	
	//Apaga manualmente los subsistema de SDL
	SDL_Quit();

	return 0;
}
